/*
 * Ganesa Copyright (C) 2008 Wim Crols <twimpiex@gnx.be>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License Version 3
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

package be.gnx.ganesa.application.ui.widget;

import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;

public abstract class TabItemControl extends Composite {

  public TabItemControl(Composite parent, int style) {
    super(parent, style);

    addDisposeListener(new DisposeListener() {
      public void widgetDisposed(DisposeEvent disposeEvent) {
        TabItemControl.this.widgetDisposed(disposeEvent);
      }
    });

    addControlListener(new ControlAdapter() {
      @Override
      public void controlResized(ControlEvent controlEvent) {
        TabItemControl.this.controlResized(controlEvent);
        // super.controlResized(controlEvent);
      }
    });

  }

  protected void widgetDisposed(DisposeEvent disposeEvent) {
    dispose();
  }

  protected void controlResized(ControlEvent controlEvent) {
    resize();
  }

  @Override
  public abstract void dispose();

  protected abstract void resize();

}